package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.util.ArrayList;


import javax.xml.bind.ParseConversionEvent;

import model.Livro;


public class DAOlivro {
	
	private Connection conexao;
	
	public DAOlivro() {

		Conexaobd bd = new Conexaobd();
		conexao = bd.getConexao();

	}

	public void cadastra(Livro livro) {
		String sql = "insert into livro (titulo, autor, palchave, categoria, isbn)"
				+ " values (?,?,?,?,?)";
		try {

			PreparedStatement stmt = conexao.prepareStatement(sql);

			
			stmt.setString(1, livro.getTitulo());
			stmt.setString(2, livro.getAutor());
			stmt.setString(3, livro.getPalchave());
			stmt.setString(4, livro.getCategoria());
			stmt.setInt(5, livro.getIsbn());
			
			stmt.execute();
			stmt.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	
	
	public ArrayList<Livro> pesquisa(String titulo/* String autor, String palchave, String categoria, Integer isbn*/) {

		String sql = "select * from livro where titulo like ? or autor like ? or palchave like ? or categoria like ? or isbn like ?";
		ArrayList<Livro> livros = new ArrayList<Livro>();

		try {

			PreparedStatement stmt = conexao.prepareStatement(sql);

			stmt.setString(1, "%" + titulo + "%");
			stmt.setString(2, "%" + titulo + "%");
			stmt.setString(3, "%" + titulo + "%");
			stmt.setString(4, "%" + titulo + "%");
			stmt.setString(5,titulo);
			
			
			ResultSet rs = stmt.executeQuery();
			while(rs.next()) {
				Livro livro = new Livro();
				livro.setId(rs.getInt("id"));
				livro.setTitulo(rs.getString("titulo"));
				livro.setAutor(rs.getString("autor"));
				livro.setPalchave(rs.getString("palchave"));
				livro.setCategoria(rs.getString("categoria"));
				livro.setIsbn(rs.getInt("isbn"));//NAO TEM NECESSSIDADE,<<<<<<<<<<
				
		        livros.add(livro);
				// usuario.setNome(rs.getString(""));

			}
			stmt.close();
			return livros;

		} catch (Exception e) {
			// TODO: handle exception
		}

		return livros;

	}
	
	public Livro pesquisaPorId(Integer id){
		
		String sql = "select * from livro where id = ?"; 
		
		try {
			
			PreparedStatement stmt = conexao.prepareStatement(sql);
			
			stmt.setInt(1, id);
			
			ResultSet rs = stmt.executeQuery();
			if(rs.next()){
				Livro livro = new Livro(); 
				
				livro.setId(rs.getInt("id"));
				livro.setTitulo(rs.getString("titulo"));
				livro.setAutor(rs.getString("autor"));
				livro.setPalchave(rs.getString("palchave"));
				livro.setCategoria(rs.getString("categoria"));
			    livro.setIsbn(rs.getInt("isbn"));
			    
				return livro;
			
			}			else{
				
				
				System.out.println("Nao encontrado");//so pra testar
			}
			
			stmt.close();
			
		} catch (Exception e) {
			// TODO: handle exception
		}
		
		return null;
		}
	
	///##############################################################################################
	
		public void alterar(Livro livro){
			String sql = "update livro set titulo=?, autor=?, palchave=?, categoria=?, isbn=? where id = ?";
			try {
			PreparedStatement stmt = conexao.prepareStatement(sql);
			

			stmt.setString(1, livro.getTitulo());
			stmt.setString(2, livro.getAutor());
			stmt.setString(3, livro.getPalchave());
			stmt.setString(4, livro.getCategoria());
			stmt.setInt(5, livro.getIsbn());
			stmt.setInt(6, livro.getId());
			
			stmt.execute();
			stmt.close();
			
			} catch (Exception e) {
				// TODO: handle exception
			}
		}
		
	///##############################################################################################

	     public void excluir(Livro livro){
	    	 String sql= "Delete from livro where id = ?";
	    	 try {
	    		 PreparedStatement stmt = conexao.prepareStatement(sql);
	    		 stmt.setInt(1, livro.getId());
	    		 
	    		 stmt.execute();
	    		 stmt.close();
	    		 
			} catch (Exception e) {
				// TODO: handle exception
			}
	     }
	
	     


}
